# OpenAI的Chat Model中的各种消息角色。
# 1. system 系统消息，用于设定Chat Model的行为，比如你是一个什么样的助手。
# 2. user 用户消息，用于提供用户的输入，比如用户的问题。
# 3. assistant 助手消息，用于提供Chat Model的回答，比如Chat Model的回答。
# 4. function 函数消息，用于提供函数的调用，比如函数的调用。
# import openai
#
# openai.ChatCompletion.create(
#     model="gpt-3.5-turbo",
#     messages=[
#         {"role": "system", "content": "You are a helpful assistant."},
#         {"role": "user", "content": "Who won the world series in 2020?"},
#         {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
#         {"role": "user", "content": "Where was it played?"}
#     ]
# )

# LangChain的ChatPromptTemplate
# 导入聊天消息类模板
from langchain.prompts import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

# 模板的构建
template = "你是一位专业顾问，负责为专注于{product}的公司起名。"
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "公司主打产品是{product_detail}。"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
prompt_template = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

# 格式化提示消息生成提示
prompt = prompt_template.format_prompt(product="鲜花装饰", product_detail="创新的鲜花设计。").to_messages()

# 下面调用模型，把提示传入模型，生成结果
import os

os.environ["OPENAI_API_KEY"] = 'sk-f2M0jWxDEb7IJKiuCnMsvKE7TLSYCA36pyl8gWA1XLaHnD8l'
os.environ["OPENAI_BASE_URL"] = 'https://api.f2gpt.com/v1'
from langchain.chat_models import ChatOpenAI

chat = ChatOpenAI(
    model_name="gpt-4",
    temperature=0,
    max_tokens=100,
)
result = chat(prompt)
print(result.content)
